Page({
	data:{

		ballArr:[],

		stoneData:[
			{
				url:'https://img.alicdn.com/imgextra/i3/4161056916/O1CN01992ykN20xZqvx1QRq_!!4161056916.png',
				type:'dw',  //运动状态 ： dw -- 下落状态   st -- 停止状态  ms -- 超出屏幕状态
				num:0,     //分值
				cla:'stp', //类型  ： prize -- 分数奖励  stp -- 结束游戏
				x:0,
				y:0
			},
			{
				url:'https://img.alicdn.com/imgextra/i2/4161056916/O1CN01mw5V7O20xZqy0UA55_!!4161056916.png',
				type:'dw',  //运动状态 ： dw -- 下落状态   st -- 停止状态  ms -- 超出屏幕状态
				num:0,     //分值
				cla:'stp', //类型  ： prize -- 分数奖励  stp -- 结束游戏
				x:0,
				y:0
			}
		],

		ballData:[
			{
				url:'https://img.alicdn.com/imgextra/i2/4161056916/O1CN01CFDK1a20xZqsdOBnz_!!4161056916.png',
				type:'dw',  //运动状态 ： dw -- 下落状态   st -- 停止状态  ms -- 超出屏幕状态
				num:10,     //分值
				cla:'prize', //类型  ： prize -- 分数奖励  stp -- 结束游戏
				x:0,
				y:0
			},
			{
				url:'https://img.alicdn.com/imgextra/i2/4161056916/O1CN01Wq0bTD20xZqsdMuoK_!!4161056916.png',
				type:'dw',  //运动状态 ： dw -- 下落状态   st -- 停止状态  ms -- 超出屏幕状态
				num:20,     //分值
				cla:'prize', //类型  ： prize -- 分数奖励  stp -- 结束游戏
				x:0,
				y:0
			},
			{
				url:'https://img.alicdn.com/imgextra/i4/4161056916/O1CN01bQZrx220xZqoo3aMn_!!4161056916.png',
				type:'dw',  //运动状态 ： dw -- 下落状态   st -- 停止状态  ms -- 超出屏幕状态
				num:30,     //分值
				cla:'prize', //类型  ： prize -- 分数奖励  stp -- 结束游戏
				x:0,
				y:0
			},
			{
				url:'https://img.alicdn.com/imgextra/i3/4161056916/O1CN01pJNTkH20xZqsdNqzS_!!4161056916.png',
				type:'dw',  //运动状态 ： dw -- 下落状态   st -- 停止状态  ms -- 超出屏幕状态
				num:40,     //分值
				cla:'prize', //类型  ： prize -- 分数奖励  stp -- 结束游戏
				x:0,
				y:0
			},
			{
				url:'https://img.alicdn.com/imgextra/i1/4161056916/O1CN01D2VQP520xZqoo3BOz_!!4161056916.png',
				type:'dw',  //运动状态 ： dw -- 下落状态   st -- 停止状态  ms -- 超出屏幕状态
				num:50,     //分值
				cla:'prize', //类型  ： prize -- 分数奖励  stp -- 结束游戏
				x:0,
				y:0
			},
			{
				url:'https://img.alicdn.com/imgextra/i2/4161056916/O1CN01CFDK1a20xZqsdOBnz_!!4161056916.png',
				type:'dw',  //运动状态 ： dw -- 下落状态   st -- 停止状态  ms -- 超出屏幕状态
				num:60,     //分值
				cla:'prize', //类型  ： prize -- 分数奖励  stp -- 结束游戏
				x:0,
				y:0
			}
		],
		
		mineBall:{
			url:'https://img.alicdn.com/imgextra/i2/4161056916/O1CN01a4UHrA20xZqusdHUM_!!4161056916.png',
			x:0,
			y:0
		},

		minData:{
			w:0,
			h:0,
			x:0,
			y:0
		},

		dowmTime:10,

		tolerance:8,

		stMove:0, //超出的范围

		integral:0,  //积分
		
		gameState:'over',   //start -- 开始游戏  over -- 结束游戏

		downTimeImg:[
			{
				url:'https://img.alicdn.com/imgextra/i1/4161056916/O1CN01d0h3xh20xZqndShKC_!!4161056916.png'
			},
			{
				url:'https://img.alicdn.com/imgextra/i1/4161056916/O1CN01oEluV320xZqugtx1L_!!4161056916.png'
			},
			{
				url:'https://img.alicdn.com/imgextra/i3/4161056916/O1CN01xPA8H120xZqoDtm2f_!!4161056916.png'
			}
		],

		dwTi:4,

		firset:true,  //第一次进来是直接开始的

		isShowPop:false,

		isLeft:true
	},

	//更新自己的位置
	changeMine(e){

		let {minData}  = this.data

		minData.x = e.detail.x
		minData.y=e.detail.y

		this.setData({
			minData
		})

	},

	//开始游戏 ---- 初始值都从这里设置
	startGame(){

		clearInterval(this.gameSet)

		clearInterval(this.downTimeSet)

		clearTimeout(this.ggSet)

		let aFlag = 0

		let w1 = my.getSystemInfoSync().windowWidth;
		let h1 = my.getSystemInfoSync().windowHeight;

		this.setData({
			dowmTime:10,
			integral:0,
			dwTi:aFlag,
			isShowPop:false,
			ballArr:[],
			minData:{
				x:(w1 - (200 / (750 / my.getSystemInfoSync().windowWidth))) /2,
				y:(h1 - (200 / (750 / my.getSystemInfoSync().windowWidth))) * 0.95,
				w:(200 / (750 / my.getSystemInfoSync().windowWidth)),
				h:(200 / (750 / my.getSystemInfoSync().windowWidth))
			},
			mineBall:{
			url:'https://img.alicdn.com/imgextra/i2/4161056916/O1CN01a4UHrA20xZqusdHUM_!!4161056916.png',
				x:(w1 - (200 / (750 / my.getSystemInfoSync().windowWidth))) /2,
				y:(h1 - (200 / (750 / my.getSystemInfoSync().windowWidth))) * 0.95,
			},
		})

		this.dtTimeSet = setInterval(() => {
			this.setData({
				dwTi:aFlag += 1
			})

			if(aFlag == 3){
				clearInterval(this.dtTimeSet)
				
				this.setData({
				gameState:'start',
				integral:0
			})

			this.downTimeSet = setInterval(() => {
				this.setData({
					dowmTime:this.data.dowmTime - 1 <= 0 ? 0 : this.data.dowmTime - 1
				})

				if(this.data.dowmTime <= 0){
					clearInterval(this.downTimeSet)
				}
			},1000)

			// 结束游戏 判断
			this.ggSet = setTimeout(() => {
				clearInterval(this.moveSet);
				clearInterval(this.gameSet);
				clearTimeout(this.ggSet);

				this.setData({
					gameState:'over',
					isShowPop:true
				})

				getApp().cloud.function.invoke('game',{energy:this.data.integral},"finishGame").then(res => {
					console.log('完成游戏=====>',res); 
				})
			},10000)

			this.moveBall()

			//开始生产前先生产一个，页面不会空白
			this.devFun()

			//正式专用
			this.gameSet = setInterval(() => {
				this.devFun()
			},this.data.system == 'iOS' ? 400 : 260)

			}
		},1000)

		return


		//测试专用
		// this.gameSet = setTimeout(() => {
		// 	this.devFun()
		// },this.data.system == 'iOS' ? 10000 : 8000)
	},

	//生产球球 -- 就把球球塞进容器背包里
	devFun(){
		//获得一个0-5的随机数

		let maxNum = 90;
		let minNum = 0;

		let alNum = parseInt(Math.random() * ( maxNum - minNum + 1 ) + minNum, 10)

		//二次处理
		alNum = Math.floor(alNum / 10)

		let {ballArr} = this.data

		let alin

		if(alNum >= 6){



			//拿到临时变量里，改装一下
			// alin = JSON.parse(JSON.stringify(this.data.stoneData[alNum == 6 && this.data.isLeft ? 0 : 1]))

			// alin.x = alNum == 6 && this.data.isLeft ? 0 : my.getSystemInfoSync().windowWidth
			// alin.w=(220 / (750 / my.getSystemInfoSync().windowWidth));
			// alin.h=(200 / (750 / my.getSystemInfoSync().windowWidth));

			// this.setData({
			// 	isLeft:alNum == 6 && this.data.isLeft ? false : true
			// })

			alin = JSON.parse(JSON.stringify(this.data.stoneData[this.data.isLeft ? 0 : 1]))

			alin.x = this.data.isLeft ? 0 : my.getSystemInfoSync().windowWidth
			alin.w=(220 / (750 / my.getSystemInfoSync().windowWidth));
			alin.h=(200 / (750 / my.getSystemInfoSync().windowWidth));

			this.setData({
				isLeft:this.data.isLeft ? false : true
			})

			
		}else{
			//拿到临时变量里，改装一下
			alin = JSON.parse(JSON.stringify(this.data.ballData[alNum]))

			alin.x = this.randomLocal()
			alin.w=(200 / (750 / my.getSystemInfoSync().windowWidth));
			alin.h=(200 / (750 / my.getSystemInfoSync().windowWidth));
		}

	

		// 再塞进球球背包里
		ballArr.push(alin)

		this.setData({
			ballArr
		})

		// console.info(ballArr)
	},

	//移动球球 -- 也要判断球球是否跟底部球球碰撞
	moveBall(){

		clearInterval(this.moveSet)

		this.moveSet = setInterval(() => {

				let {ballArr} = this.data

				ballArr.map((v,i) => {
					if(v.type == 'dw'){
						v.y += this.data.tolerance / this.data.bili

						let pengResult = this.collision(v);

						if(pengResult){
							// console.info('碰上了')
							if(v.cla == 'stp'){
								clearInterval(this.moveSet);
								clearInterval(this.gameSet);
								clearTimeout(this.ggSet);

								this.setData({
									gameState:'over',
									isShowPop:true
								})

								getApp().cloud.function.invoke('game',{energy:this.data.integral},"finishGame").then(res => {
									console.log('完成游戏=====>',res); 
								})

								return
							}
							
							v.type = 'st'

							this.setData({
								integral:this.data.integral += v.num
							})

						}else{
							// console.info('没事')
						}
						

						if(v.y >= this.data.stMove){
							v.type = 'ms'
						}
					}
				})

				this.setData({
					ballArr
				})
		},this.data.system == 'iOS' ? 14 : 10)

	},

	//随机位置
	randomLocal(){
		let w1 = my.getSystemInfoSync().windowWidth;

		let max = w1 - (200 / this.data.bili)
		let min = 0

		return parseInt(Math.random() * ( max - min + 1 ) + min, 10)

	},

	//碰撞检测
	collision(obj){
		let mine = this.data.minData

		let x1 = obj.x  
		let x2 = obj.x + (obj.w - 32 / this.data.bili)

		let y1 = obj.y
		let y2 = obj.y + (obj.h - 36 / this.data.bili)

		let minX2 = mine.x + (mine.w - 32 / this.data.bili)

		let minY2 = mine.y + (mine.h - 36 / this.data.bili)

		if(
			(
				(mine.x >= x1 && mine.x <= x2)
				||
				(minX2 >= x1 && minX2 <= x2)
			)

			&&

			(
				(mine.y >= y1 && mine.y <= y2)
				||
				(minY2 >= y1 && minY2 <= y2)
			)
		){
			return true
		}		

		return false
	},
	
	//我的排行榜
  ranking(){
		my.redirectTo({
			url: '../topList/topList'
		});
	},

	playAgain() {

		my.showLoading();
		getApp().cloud.function.invoke('client',{},"getCurrentUserInfo").then(res => {
			console.log('获取剩余游戏次数=====>',res); 

			my.hideLoading();

			if(res.data.game_left_num <= 0){
				my.navigateTo({
					url: '../drawResult/drawResult?end=gameNo'
				});
			}else{
    		this.startGame();
			}
		})
	},
	
	// 提取能量
  getEnergy(){
		my.redirectTo({
			url: '../drawPrize/drawPrize'
		});
  },

	onShow(){

		

		if(this.data.firset){

			clearInterval(this.gameSet)

			clearInterval(this.downTimeSet)

			clearTimeout(this.ggSet)


			this.startGame()

			this.setData({
				firset:false
			})
		}

	},

	onLoad(){

		//求出底部球的位置
		let al = this.data.mineBall;


		let w1 = my.getSystemInfoSync().windowWidth;
		let h1 = my.getSystemInfoSync().windowHeight

		// console.info(my.getSystemInfoSync().platform)


		al.x = (w1 - (200 / (750 / my.getSystemInfoSync().windowWidth))) /2
		al.y = (h1 - (200 / (750 / my.getSystemInfoSync().windowWidth)))

		this.setData({
			bili: 750 / my.getSystemInfoSync().windowWidth,
			system:my.getSystemInfoSync().platform,
			mineBall:al,
			stMove:h1 + (200 / (750 / my.getSystemInfoSync().windowWidth)),
			minData:{
				x:(w1 - (200 / (750 / my.getSystemInfoSync().windowWidth))) /2,
				y:(h1 - (200 / (750 / my.getSystemInfoSync().windowWidth))) * 0.95,
				w:(200 / (750 / my.getSystemInfoSync().windowWidth)),
				h:(200 / (750 / my.getSystemInfoSync().windowWidth))
			}
		})
	}
})